//在使用toast方法时,可以传入参数,也可以不传入参数
//如果传入参数 ,传入对象作为参数
// const toast = (options = {}) => {}

//如果用户传入对象作为参数
//在形参位置通过解构的方式获取用户传入参数,同时设置默认值
/**
 * @description 消息提示框
 * @param {*} param0 参数和微信参数保持一致
 */
const toast = ({ title = '数据加载中...', icon = 'none', duration = 2000, mask = true } = {}) => {
  wx.showToast({
    title,
    icon,
    duration,
    mask
  })
}

//调用model 方法 可以传参数/不传
//传递参数需要和对象属性的wx.showmode参数一致
const Model = (options = {}) => {
  //promise 返回用户操作
  //如果用户点击确定,resolve返回true
  //如果用户点击取消,resolve返回false
  return new Promise((resolve) => {
    //默认参数
    const defaultOpt = {
      title: '提示',
      content: '你确定执行该操作吗?',
      confirmColor: '#f3514f'
    }
    //通过obj.assign方法参数进行合并
    const opts = Object.assign({}, defaultOpt, options)

    wx.showModal({
      ...opts,
      complete({ confirm, cancel }) {
        confirm && resolve(true)
        cancel && resolve(false)
      }
    })
  })
}

//如果其他js文件要用先导入toast
//如果很多页面都需要使用此方法
//可以将该方法挂载到wx全局
//挂载到微信全局上此方法生效 需要先使此方法执行一次
wx.toast = toast
wx.Model = Model
export { toast, Model }
